#include <string>
using namespace std;
class Solution {
public:
    int monotoneIncreasingDigits(int n) {
        if(n < 10) return n;
        string s = to_string(n);
        int ans = 0;
        int ss = s.size(); 
        // 如果原数数各位单调递增，那就是原数
        // 找到单调递增的最长子串，然后让最后一位减一后面填9即可
        int i = 1;
        // 找到递增串的最后一个
        while(i < ss)
        {
            if(s[i] < s[i - 1]) break;
            ++i;
        }
        --i;
        // 如果一整个都是递增串，那就break
        if(i == ss - 1) return n;
        // 找到相同串中的第一个
        for(; i > 0 && s[i - 1] == s[i]; --i)
            ;
        s[i] -= 1;
        // cout << first << endl;
        for(i = i + 1; i < ss; ++i)
            s[i] = '9';
        return stoi(s);
    }
};